SELECT-Anweisung in SQL

Der am häufigsten gebrauchte SQL-Befehl ist SELECT. Er wählt im einfachen Fall eine einzige Tabelle und bildet aus jenen Attributwerten, die eine bestimmte Selektionsbedingung erfüllen, eine sortierte Ergebnistabelle. Vereinfacht lautet sein Format:

SELECT [DISTINCT] <Attribut1>, ..., <AttributN>
FROM <Tabelle>
WHERE <Selektionsbedingung>
[ORDER BY <Sortierkriterium> [DESC]]

Das optionale Schlüsselwort DISTINCT garantiert, dass das Ergebnis einer SQL-Abfrage wieder eine Relation (eine Tabelle im Sinne des Relationenmodells) ist, also keine Duplikate enthält. Wenn zum Beispiel gefragt wird, ob eine Studentin Prüfungen nach dem 30. März 2000 bestanden hat, so erwähnt sie die Ergebnistabelle nur ein einziges Mal, obwohl sie seither vielleicht mehrere Prüfungen bestanden hat. Das ebenfalls optionale ORDER BY sortiert die Ergebnistabelle. Voreingestellt ist eine aufsteigende Sortierreihenfolge. Das wahlfreie zusätzliche Schlüsselwort DESC sortiert absteigend. 

Das Hilfethema Beziehungen führt in die Abfrage mehrerer Tabellen ein. Eine vollständige Beschreibung von SELECT erhalten Sie im Access-Hilfethema SQL in Abfragen, Formularen, Berichten, Makros und Modulen.

Beispiel

Ein Kombinationsfeld KmfVeranstaltung soll die Namen aller Veranstaltungen der Tabelle VERANSTALTUNG anzeigen. Die SQL-Abfrage, welche die Namen aller Veranstaltungen ergibt, lautet:

SELECT Veranstaltung FROM VERANSTALTUNG

Umgangssprachlich lautet die Abfrage:

Wähle alle Werte des Felds Veranstaltung der Tabelle VERANSTALTUNG.

Wenn die Veranstaltungsnamen der Tabelle VERANSTALTUNG nicht gleich dem Schlüssel sind, dann kommt das Schlüsselwort DISTINCT hinzu. Es entfernt allfällige Duplikate aus der Ergebnistabelle:

SELECT DISTINCT Veranstaltung FROM VERANSTALTUNG

In der Regel muss die Entwicklerin SQL-Anweisungen nicht selbst erstellen. MS Access generiert aus der QBE-Entwurfsansicht oder aus einem anderen Dialog mit dem Benutzer automatisch einen SQL-Befehl. Generierte SQL-Anweisungen enthalten oft redundante Elemente. Zum Beispiel werden überflüssigerweise Feldnamen mit dem Tabellennamen qualifiziert (VERANSTALTUNG.Veranstaltung statt nur Veranstaltung), Namen zwischen eckige Klammern gesetzt oder Trennzeichen wie Klammern und Semikolons hinzugefügt. Die zweite der obigen Anweisungen könnte zum Beispiel wie folgt generiert werden:

SELECT DISTINCT [VERANSTALTUNG].[Veranstaltung] FROM VERANSTALTUNG;

Eine SQL-Abfrage, die sich nicht in QBE darstellen lässt

SQL in Abfragen, Formularen, Berichten, Makros und Modulen

SELECT-Anweisung